package main

import (
	"database/sql"
	"github.com/gin-gonic/gin"
	_ "github.com/go-sql-driver/mysql"
	"log"
	"net/http"
)

type LoginUser struct {
	ID       int    `json:"id"`
	Username string `json:"username"`
	Password string `json:"password"`
}

func main() {
	router := gin.Default()
	// 连接MySQL数据库
	db, err := sql.Open("mysql", "root:meizu.com@tcp(10.131.12.51:3308)/test")
	if err != nil {
		log.Fatal(err.Error())
	}
	defer db.Close()

	// 用户登录认证接口
	router.POST("/service/login", func(c *gin.Context) {
		var user LoginUser
		// 绑定传入参数到user变量
		if err := c.ShouldBindJSON(&user); err != nil {
			c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()})
			return
		}
		// 从数据库中根据用户名和密码查询对应记录
		row := db.QueryRow("SELECT * FROM user WHERE username = ? AND password = ?", user.Username, user.Password)

		// 将从数据库获得的用户信息，复制到user变量中
		err := row.Scan(&user.ID, &user.Username, &user.Password)

		// 若发生错误，则代表未从数据库中获得用户信息
		if err != nil {
			c.JSON(http.StatusUnauthorized, gin.H{"message": "登录失败！"})
			return
		}

		c.JSON(http.StatusOK, gin.H{"message": "登录成功！"})
	})
	// 启动服务器
	router.Run(":9080")
}
